/////////////////////////////////////////////////////////////////////////////////////////////
// Filename: GraphicsOwnedStates.h
// (c) Dave Ottley, 2012. All rights reserved.
/////////////////////////////////////////////////////////////////////////////////////////////
#ifndef GRAPHICSOWNEDSTATES_H
#define GRAPHICSOWNEDSTATES_H

///////////////////////////
//		INCLUDES
///////////////////////////


///////////////////////////
//		MY INCLUDES
///////////////////////////
#include "State.h"


class D3DClass;
struct Telegram;

class GraphicsNormalState : public State<D3DClass>
{
private:
	// Singleton
	GraphicsNormalState() {}
	GraphicsNormalState(const GraphicsNormalState&);
	GraphicsNormalState& operator=(const GraphicsNormalState& rhs);

public:
	static GraphicsNormalState * GetInstance();
	virtual void Enter(D3DClass * graphicsSubsystem);
	virtual void Execute(D3DClass * graphicsSubsystem);
	virtual void Exit(D3DClass * graphicsSubsystem);
	virtual bool OnMessage(D3DClass * graphicsSubsystem, const Telegram& msg);

};

class GraphicsGlobalState : public State<D3DClass>
{
private:
	// Singleton
	GraphicsGlobalState() {}
	GraphicsGlobalState(const GraphicsGlobalState&);
	GraphicsGlobalState& operator=(const GraphicsGlobalState& rhs);

public:
	static GraphicsGlobalState * GetInstance();
	virtual void Enter(D3DClass * graphicsSubsystem);
	virtual void Execute(D3DClass * graphicsSubsystem);
	virtual void Exit(D3DClass * graphicsSubsystem);
	virtual bool OnMessage(D3DClass * graphicsSubsystem, const Telegram& msg);

};


#endif // GRAPHICSOWNEDSTATES_H